// 下面是一个普通的函数，参数类型会被默认推断为 any，不建议
/* function add(n1, n2) {
  return n1 + n2
} */

// 给函数指定类型：说的就是给函数参数和返回值指定类型
// 第一种方式：分别指定参数类型和返回值类型
/* function add(n1: number, n2: number): number {
  return n1 + n2
}

const r: number = add(1, 2)
r.toFixed(2) */

/* const add = (n1: number, n2: number): number => n1 + n2
add(1, 3) */

// 第二种方式：同时/整体指定，这种只使用于函数表达式的定义方式
// const add: (n1: number, n2: number) => number = (n1: number, n2: number): number => n1 + n2
/* type CusFn = (n1: number, n2: number) => number
const add: CusFn = (n1, n2) => n1 + n2 */

type CusFn = (n1: number, n2: number) => number
const add: CusFn = function (n1, n2) {
  return n2 + n2
}
add(1, 2).toFixed(2)

// const arr = ['b']
// arr.includes('a')

// 如果函数指定了 void 就表示啥也没有返回，手动 return undefined 也不叫加
function greet(name: string): void {
  console.log('Hello', name)
  // return undefined // 默认有这么一句
}

export {}
